package Bi_Tree.level_traversal;

import Bi_Tree.TreeNode;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;

/*
* 给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。
* */
public class lc637 {
    public List<Double> averageOfLevels(TreeNode root) {
       // List<List<Integer>> list=new ArrayList<>();
        Queue<TreeNode> queue=new LinkedList<>();
        List<Double> result=new ArrayList<>();
        if(root==null){
            return result;
        }
        TreeNode node=root;
        queue.offer(node);
        while(!queue.isEmpty()){
            List<Integer> smalllist=new ArrayList<>();
            double len= queue.size();
            double a=len;
            double avg=0;
            double sum=0;
            while(len>0){
                node= queue.poll();
                smalllist.add(node.val);
                if(node.left!=null) queue.offer(node.left);
                if(node.right!=null) queue.offer(node.right);
                len--;
            }
            for (int i:smalllist
            ) {
                sum+=i;
            }
            avg=sum/a;
            result.add(avg);
        }
        return result;

    }
}
